import pandas as pd

# 环境需求：python pandas openpyxl

# 用户输入交互，特定输入可触发默认值
print("\n\n\n#######################################\n如果是用于咱们的大表，请直接输入ch0或者ch5\n#######################################")
file_a = input("请输入被减数表格的绝对路径或相对路径：")

# 判断一下是否常用文件
if file_a.strip() == "ch0":
    file_a = '新媒体应用部资产统计-新版.xlsx'
    sheet_a = '阿里云公有云MLS'
    column_a = '云内IP地址'
elif file_a.strip() == "ch5":
    file_a = '新媒体应用部资产统计-新版.xlsx'
    sheet_a = '阿里云公有云CH5'
    column_a = '云内IP地址'
else:
    sheet_a = input("xlsx的sheet页名称，csv直接回车：     ")
    column_a = input("请输入被减数表格的列首行标题：        ")

# 判断一下是否常用文件
print("\n\n\n#######################################\n如果已经把csv文件改名为1.csv请直接回车\n########################################")
file_b = input("请输入源表格的绝对路径或相对路径：")
if file_b.strip() == "":
    file_b = '1.csv'
    column_b = '私网 IP'
else:
    sheet_b = input("xlsx的sheet页名称，csv直接回车：  ")
    column_b = input("请输入源表格的列首行标题：        ")

# 读取表格A和表格B
if file_a.lower().endswith('.xlsx'):
    df_a = pd.read_excel(file_a, sheet_name=sheet_a, engine='openpyxl')
elif file_a.lower().endswith('.xlsx'):
    df_a = pd.read_csv(file_a)
else:
    print("被减数表格的格式错误，需要xlsx或者csv")
    exit()

if file_b.lower().endswith('.xlsx'):
    df_b = pd.read_excel(file_b, sheet_name=sheet_b, engine='openpyxl')
elif file_b.lower().endswith('.csv'):
    df_b = pd.read_csv(file_b)
else:
    print("源 表格的格式错误，需要xlsx或者csv")
    exit()

# 获取表格A和表格B的IP地址列
ip_a = set(df_a[column_a])
ip_b = set(df_b[column_b])

# 找出表格B中未被包含在表格A中的IP地址
unincluded_ips = ip_b - ip_a

# 将未被包含的IP地址转换为DataFrame
# unincluded_df = pd.DataFrame(list(unincluded_ips), columns=['Unincluded IPs'])

# 找出表格B中未被包含的整行数据
unincluded_rows = df_b[df_b[column_b].isin(unincluded_ips)]

# 输出为CSV文件
unincluded_rows.to_csv('源表格未被统计的内容.csv', index=False)

# 或者输出为XLSX文件
# unincluded_rows.to_excel('源表格未被统计的内容.xlsx', index=False)

print("未被包含的IP地址已输出到当前目录名为：源表格未被统计的内容")